在撰寫程式的過程中,我們常常會需要處理來自不同來源的資料,因此,透過一些特殊的資料集合來處理便會十分方便。
例如,身分證字號由英文字元及數字構成,我們就可將它存放於一個"字串"內。
除此之外,透過陣列便可以有序列性的存取資料,不管是在管理或是存取資料上,都會方便許多。
現在我們便來看Java中陣列與字串的處理方法。
陣列
陣列的宣告如下,基本上索引值必由0開始,這點幾乎所有的程式語言都是這樣。
另外,宣告陣列時必須同時指定其大小。
int[] a = new int[10]
or
int[] a = {1,2,3,4,5,6,7,8,9,10}
上面是一維陣列的宣告的方法,如果是二維的話:
int[][] b = {[1,2,3],[4,5,6]}
int[][] b = new int[3][3]
把資料放進去陣列後,我們要怎麼把資料拿出來呢? 這時候要透過迴圈---
for(int i=0; i<a.length; i++){
System.out.println(a[i]);
}
在JDK5之後,提供了另一種強式for迴圈
for(int i:a){
System.out.println(i);
}
for中的int代表的是a陣列中元素的型態,如果a是字元陣列的話,就要改成char。
以上就是陣列的內容,讓我們來看一下字串的用法。
Java中在處理字串時,通常會以String類別來包裹字串,如:
String s = "123456";
而我們可以可以用String類別charAt()方法來獲得個別字元。另外,字串長度的方法為length(),與陣列的length不同。
for(int i=0; i<s.length(); i++){
System.out.println(s.charAt(i));
}
這樣就可以獲得字串中的每個字元囉~
另外,我們要怎麼比較字串的內容是一樣的呢?
先來看以下例子。
String s1 = new String("Grant");
String s2 = "Grant";
System.out.println(s1==s2); //false
System.out.println(s2.equals(s2)); //true
明明內容相同,但是卻是false,造成這個結果的原因是Java中如果直接給與字串內容,該字串會被儲存於字串池中(s2)。
而s1的宣告是以new String的方式,所以會給s1分配一個全新的記憶體區塊,一個是存在字串池中,另一個是存在別的記憶體區塊中,所以如果直接==當然就會是false了。
因此,若想單純比較字串實際字元內容是否相同,不要使用==,要使用equals()。
以上就是今天的內容,明天見囉。
Hi, I am Grant.
個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#
.